"""
Unified component registration and creation system for DIL_Frame.

This module provides:
1. Registry for component types
2. Decorators for easy registration
3. Factory functions for component creation

All component registration and creation should use this module's API.
"""

from .registry import (
    Registry,
    STANDARD_REGISTRIES,
    LEARNER_REGISTRY,
    TRAINING_STRATEGY_REGISTRY,
    DRIFT_COMPENSATION_REGISTRY,
    PROTOTYPE_MANAGER_REGISTRY,
    MEMORY_MANAGER_REGISTRY,
    CLASSIFIER_ALIGNMENT_REGISTRY,
    EVALUATION_MANAGER_REGISTRY,
)

from .decorators import (
    register_learner,
    register_training_strategy,
    register_drift_compensation,
    register_prototype_manager,
    register_memory_manager,
    register_classifier_alignment,
    register_evaluation_manager,
    register_multi,
)

from .factory import (
    create_component,
    create_learner,
    create_training_strategy,
    create_training_strategy_typed,
    create_classifier_alignment,
    create_classifier_alignment_typed,
    create_prototype_manager,
    create_prototype_manager_typed,
    create_drift_compensation,
    create_memory_manager,
    create_evaluation_manager,
    list_available,
    list_learners,
    list_training_strategies,
    list_classifier_alignments,
    list_prototype_managers,
    list_drift_compensations,
    list_memory_managers,
    list_evaluations,
)

__all__ = [
    # Registry classes
    "Registry",
    "STANDARD_REGISTRIES",
    "LEARNER_REGISTRY",
    "TRAINING_STRATEGY_REGISTRY",
    "DRIFT_COMPENSATION_REGISTRY",
    "PROTOTYPE_MANAGER_REGISTRY",
    "MEMORY_MANAGER_REGISTRY",
    "CLASSIFIER_ALIGNMENT_REGISTRY",
    "EVALUATION_MANAGER_REGISTRY",
    # Registration decorators
    "register_learner",
    "register_training_strategy",
    "register_drift_compensation",
    "register_prototype_manager",
    "register_memory_manager",
    "register_classifier_alignment",
    "register_evaluation_manager",
    "register_multi",
    # Factory functions
    "create_component",
    "create_learner",
    "create_training_strategy",
    "create_training_strategy_typed",
    "create_classifier_alignment",
    "create_classifier_alignment_typed",
    "create_prototype_manager",
    "create_prototype_manager_typed",
    "create_drift_compensation",
    "create_memory_manager",
    "create_evaluation_manager",
    # List functions
    "list_available",
    "list_learners",
    "list_training_strategies",
    "list_classifier_alignments",
    "list_prototype_managers",
    "list_drift_compensations",
    "list_memory_managers",
    "list_evaluations",
]
